<?php

namespace App\Http\Controllers\User;

use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class RegisterController extends Controller
{


    //注册加载页面方法
    public function create()
    {
        return view('user.register');
    }

   //注册验证保存的方法
    public function store(Request $request,User $user)
    {
//        dd($request);
        //当某个Request验证需要复用的时候可以单独建立Request请求类,当需要对前台提交过来的数据验证的时候可以调用之前的Request类
        //但是当某个验证不需要复用的时候,就可以直接在控制器中调用当前对象的validate()方法进行验证,规则写法和Request中的写法一致
        $this->validate($request,[
            //唯一性验证的时候要指定在哪个后台数据表中验证哪个字段,不写就取前面的键名
            'email'=>'unique:users',
            'password'=>'required|confirmed',
            'code'=>'required'
        ],[
            'email.unique'=>'邮箱必须唯一,不能重复',
            'password.required'=>'密码不能为空',
            'password.confirmed'=>'密码不一致',
            'code.required'=>'验证码不能为空'
        ]);
        //上面的验证通过以后,接着需要判断用户输入的验证码和邮箱是不是和发送的验证码一致
        //这里使用&&语句,只有&&前后的判断条件都为真的时候才为true,否则为false,然后将判断结果返回给$rule
        $status = session('register.email') == $request->input('email') &&
            session('register.code') == $request->input('code');
        if (!$status){
            return back()->with('error','验证码错误或者邮箱不一致');
        }
        //通过验证后就可以向user表中新增用户数据了
        $data = $request->all();
        $data['password'] = bcrypt($data['password']);
//        可以通过User对象调用create()方法,向模型对应的数据表中创建一条新的数据
//        $user->create($data);
        //也可以直接通过User类静态调用create()方法创建数据
        User::create($data);
        return redirect(route('login'))->with('success','用户注册成功');
    }


}
